<?php
namespace Pinenut\Service\Dispatcher;
/**
 *
 * Диспечер действий, кеширующий
 *
 * @author kosh
 *
 */
use Pinenut\Service\Dispatcher;

class Caching extends Dispatcher {
	
	
	static function action($request) {
	
		$context = static::$currentContext;
	
		// добавляем в стек действие
		$context->pushRequest($request);
	
		// проверяем - может уже есть готовый ответ
		$response = $context->getResponse();
	
		if (! $response instanceof \Pinenut\Response) {
			// надо бы действие исполнить
	
			
			$response = static::doAction($request, $response);
						
	
			// добавляем ответ для текущего действия
			$context->addResponse($response);
	
		}
		// убираем из стека это действие
		$context->popRequest();
	
		return $response;
	}
	
}